<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    let p1 = new Promise((resolve, reject) => {
      setTimeout(() => {
        let data = 100;
        resolve(data)
        // reject(100);
      }, 1000);
    });

    let p2 = new Promise((resolve, reject) => {
      setTimeout(() => {
        let data = 200;
        resolve(data)
        // reject(800);
      }, 1000);
    });

    let p3 = new Promise((resolve, reject) => {
      setTimeout(() => {
        let data = 300;
        resolve(data)
      }, 3000)
    });


    let p = Promise.race([p1, p2, p3]) // 他的返回值也是一个Promise的实例

    p.then((data) => {
      console.log(data, '成功');
      // 发送第四次请求
    }).catch((data) => {
      console.log(data, '失败');
    });

 // 上面代码中，只要p1、p2、p3之中有一个实例率先改变状态，p的状态就跟着改变。那个率先改变的 Promise 实例的返回值，就传递给p的回调函数。
 // 谁执行的快，就听谁的
  </script>
</body>

</html>